#!/bin/bash

############################
# Internet connection test #
############################
net()
{
   PING=`ping -c 1 $1 | grep transm | awk '{print $7}'`
   PING=${PING%%%}

   if [ $PING -ge "70" ];
   then
      echo "error"
   else
      echo "ok"
   fi
}

#####################################
# Temporary file deleteing function #
#####################################
remove_tmp_file()
{
   if [ -f $1 ];
   then
      rm $1
   fi
}

################
# Close script #
################
close()
{
   echo $1
   kill -SIGINT $$
}

##########################################################################

# Sync host
HOST='sync.dig1wire.eu'

# Get hardware serial
SERIAL=`cat /etc/dig1wire/serial`

# System info
LINUX_VERSION=`cat /proc/version | awk '{print $3}'`
CPU_VERSION=`cat /proc/cpuinfo | grep 'system type' | awk '{print $4, $5}'`
ROUTER_VERSION=`cat /proc/cpuinfo | grep 'machine' | awk '{print $3, $4}'`

##########################
# Check if serial exists #
##########################
if [ ! $SERIAL ];
then
   close "Could not find serial!"
fi

##########################################
# Check if devices (mount) folder exists #
##########################################
if [ ! -d $1 ];
then
   close "Could not find mount dir!"
fi

#############################
# Check internet connection #
#############################
if [ $(net $HOST) = "error" ];
then
   SEND="0"
else
   SEND="1"
fi

##########################################################################

# Let's remove temporary file if exists
remove_tmp_file /tmp/tmp_curl.dat

# Let's create new one
touch /tmp/tmp_curl.dat

if [ $SEND = "1" ];
then

   # Devices loop
   for DEVICE in `ls -l $1 | grep '[0-9][0-9]\.[0-9a-zA-Z]*' | awk '{ print $9 }'`
   do

      # Parameters loop
      for PARAMETER in `ls -l $1/$DEVICE | awk '{ print $9 }'`
      do

         # If file exists then get content and append to temporary file
         if [ -f $1/$DEVICE/$PARAMETER ];
         then

            echo $DEVICE/$PARAMETER=`cat $1/$DEVICE/$PARAMETER` >> /tmp/tmp_curl.dat

         fi
      done
   done

   # Lets base64 temporary file
   BASED=`base64 /tmp/tmp_curl.dat`

   # System info
   SYSINFO=`echo $LINUX_VERSION";"$CPU_VERSION";"$ROUTER_VERSION | base64`

   # Send it to server and get response
   STATUS=`curl -s -d "data=$BASED&sysinfo=$SYSINFO" -A "dig1wire-$SERIAL" $HOST`

else

   STATUS="Internet connection is interrupted, can not send data to server!"

fi

# Remove temporary file
remove_tmp_file /tmp/tmp_curl.dat

echo $(date +%y%m%d%H%M%S) - $STATUS
